<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 变量的重复声明：
        // 结论：var可以重复声明变量，let不可以重复声明变量

        //1. 使用var声明变量，可以重复声明：

        console.log(num); // undefined
        var num = 100;
        var num = 200;
        console.log(num); // 200

        // 对于上面的程序，预处理后的样子如下
        // var num;
        // var num; //重复声明，无效，不报错
        // console.log(num); // undefined
        // num = 100;
        // num = 200;
        // console.log(num); // 200

        // 2. 使用 let声明变量，不可以重复声明
        //console.log(m); // 由于变量的m的暂时性死区，会报错
        let m = 100;
        //let m = 200; // 重复什么会包语法错误
        console.log(m); // 200

        // 对上面的程序进行预处理：
        // //let m; // let 声明提升到上面，并在赋值之前产生一个 变量m的暂时性死区
        // console.log(m); //  报错不能使用
        // let m = 100;
        // console.log(m); // 200

    </script>
</body>
</html>